package study_1;

/**
 * 线程的属性
 *      1.编号（ID）            在一次运行中拥有唯一性，不同运行中可能重复
 *      2.名称（Name）          可手动设置，可重复，但是依然是线程问题定位的重要标识
 *      3.线程类别（Daemon）    是否守护线程、负责关键任务处理的线程不适宜设置为守护线程
 *                                  守护线程：Java虚拟机判定所有用户线程中止，会中止Java程序，守护线程的运行不影响程序的中止
 *                                  注意：只能在start方法调用前设置
 *      4.优先级（Priority）     默认值为5，范围为1-10；优先级只提升CPU争抢成功的概率，一般不推荐设置，可能造成线程饥饿
 */
public class Thread4 {
    public static void main(String[] args) {
        TestThread testThread = new TestThread();
        Thread t = new Thread(testThread);
        Thread t2 = new Thread(testThread);
        t.setName("TestThread1");
        t.setDaemon(true);
        t.setPriority(10);
        t2.setName("TestThread2");
        t2.setDaemon(false);
        t2.setPriority(1);
        t.start();
        t2.start();
    }

    static class TestThread implements Runnable{
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName());
            }
        }
    }
}
